package es.itpyme.websip.services;

import java.util.List;
import java.util.logging.Logger;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import es.itpyme.websip.domain.IConstantesDomain;
import es.itpyme.websip.domain.Mensaje;
import es.itpyme.websip.domain.exceptions.ItemNotFoundException;
import es.itpyme.websip.domain.exceptions.ValidateException;


public class MensajeriaService extends BaseService implements IMensajeriaService{

	private static Logger log = Logger.getLogger(MensajeriaService.class.getName());
	
//	private static VersionService instance=null;
	
	public MensajeriaService(){
		
	}
	



	/**
	 * 
	 * @see es.itpyme.websip.services.IMensajeriaService#getMensajesPorUsuario(java.lang.Integer)
	 */
	public List<Mensaje> getMensajesPorUsuario(Integer id) throws ItemNotFoundException, ValidateException {
		
		if (id==null){
			throw new ValidateException("el id es nulo al intentar obtener los mensajes del usuario");
		}
		EntityManager entityManager = this.entityManagerFactory.createEntityManager();
	    
		
		
		String queryPrincipal=String.format("select m from Mensaje m where m.usuDestino.id = :%s and m.estado=:%s",IConstantesDomain.PARAM_MENSAJE_DESTINO_ID,IConstantesDomain.PARAM_ESTADO);
		StringBuilder query=new StringBuilder(queryPrincipal);
		
    	/*if (! StringUtils.isEmpty(estado)){
    		String queryEstado=String.format(" and v.estadoVersion.codigo=:%s",IConstantesDomain.PARAM_ESTADO_VERSION);
    		query.append(queryEstado);
    	}*/
    	
    	Query q = entityManager.createQuery(query.toString());
    	
    	q.setParameter(IConstantesDomain.PARAM_MENSAJE_DESTINO_ID, id);
    	q.setParameter(IConstantesDomain.PARAM_ESTADO, IConstantesDomain.ESTADO_ACTIVO);
    	
    	/*if (! StringUtils.isEmpty(estado)){
    		q.setParameter(IConstantesDomain.PARAM_ESTADO_VERSION, estado);
    	}*/
    	
    	List<Mensaje> mensajes=(List<Mensaje>)q.getResultList();
    	
    	return mensajes;
		
	}

		
	

	
	
}
